/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package carreras.entidades;

import arduino.entidades.Tiempos;
import carreras.Configuracion;
import carreras.logger.CarrerasLogger;

/**
 *
 * @author fanky10
 */
public class CarrilCarrera {
    
    public static final String[] ESTADOS_CARRERA = new String[]{"Perdedor","Ganador","Roto","Adelantado","Eliminado","Compitiendo","Esperando"};
    
    public static final int ESTADO_PERDEDOR = 0;
    public static final int ESTADO_GANADOR = 1;
    public static final int ESTADO_ROTO = 2;
    public static final int ESTADO_ADELANTADO = 3;
    public static final int ESTADO_ELIMINADO = 4;
    public static final int ESTADO_ESPERANDO_DATOS = 5;
    public static final int ESTADO_SIN_DATOS = 6;
    private CorredorAuto corredor_auto;
    private int nro_carril;
    private TipoTiempos tiempos;
    public CarrilCarrera(Corredor corredor, Auto auto, int nro_carril){
        this(new CorredorAuto(auto, corredor),nro_carril);
    }
    public CarrilCarrera(CorredorAuto corredor_auto,int nro_carril){
        this(corredor_auto, nro_carril,Configuracion.getInstance().getTipos_tiempos());
    }
    public CarrilCarrera(Corredor corredor, Auto auto, int nro_carril,TipoTiempos tiempos) {
        this(new CorredorAuto(auto, corredor),nro_carril,tiempos);
    }
    public CarrilCarrera(CorredorAuto corredor_auto, int nro_carril,TipoTiempos tiempos) {
        this.corredor_auto = corredor_auto;
        this.nro_carril = nro_carril;
        this.tiempos = tiempos;
        
    }
    @Override
    public String toString(){
        return nro_carril + " - " + corredor_auto.getCorredor().getNombre();
    }
    public void actualiza_tiempos(Tiempos tiempos){
        for(TipoTiempo tt: this.tiempos){
            for(arduino.entidades.Tiempo t: tiempos){
                if(tt.getId() == t.getTipo_tiempo()){
//                    CarrerasLogger.debug(CarrilCarrera.class, "seteando tiempo: "+t.getTiempo());
                    tt.setTiempo(t.getTiempo());
                }
            }
        }
        this.setEsta_actualizado(true);
    }
    public String getEstadoActual(){
        return corredor_auto.getEstadoActual();
    }
    public boolean isEsta_actualizado() {
        return corredor_auto.isEsta_actualizado();
    }

    public void setEsta_actualizado(boolean esta_actualizado) {
        corredor_auto.setEsta_actualizado(esta_actualizado);
    }
    
    public Auto getAuto() {
        return corredor_auto.getAuto();
    }

    public Corredor getCorredor() {
        return corredor_auto.getCorredor();
    }

    public int getNro_carril() {
        return nro_carril;
    }

    public void setNro_carril(int nro_carril) {
        this.nro_carril = nro_carril;
    }

    public TipoTiempos getTiempos() {
        return tiempos;
    }

    public void setTiempos(TipoTiempos tiempos) {
        this.tiempos = tiempos;
    }

    public CorredorAuto getCorredor_auto() {
        return corredor_auto;
    }

    public void setCorredor_auto(CorredorAuto corredor_auto) {
        this.corredor_auto = corredor_auto;
    }

    public int getEstado_carrera() {
        return corredor_auto.getEstado_carrera();
    }

    public void setEstado_carrera(int estado_carrera) {
        corredor_auto.setEstado_carrera(estado_carrera);
    }
    
    public boolean esEliminado(){
        return this.getEstado_carrera() == ESTADO_PERDEDOR;
    }
    
    
    
}
